home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / Developer Essentials Jul 90 / Programming / MPW Interfaces & Libraries 3.1 / PInterfaces / OSUtils.p < prev    next >
Encoding:
Text File  |  1989-10-13  |  8.3 KB  |  371 lines  |  [TEXT/MPS ]

  1. {
  2. Created: Tuesday, September 19, 1989 at 11:06 AM
  3.     OSUtils.p
  4.     Pascal Interface to the Macintosh Libraries
  5.  
  6.     Copyright Apple Computer, Inc.    1985-1989
  7.     All rights reserved
  8.     
  9.     Dont use:
  10.     -SetUpA5
  11.     -RestoreA5
  12.     Instead:
  13.     SetUpA5 --> myA5 = SetCurrentA5();
  14.     RestoreA5 --> oldA5 = SetA5(myA5);
  15. }
  16.  
  17.  
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.     UNIT OSUtils;
  24.     INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED UsingOSUtils}
  28. {$SETC UsingOSUtils := 1}
  29.  
  30. {$I+}
  31. {$SETC OSUtilsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33. {$IFC UNDEFINED UsingTypes}
  34. {$I $$Shell(PInterfaces)Types.p}
  35. {$ENDC}
  36. {$SETC UsingIncludes := OSUtilsIncludes}
  37.  
  38. CONST
  39. useFree = 0;
  40. useATalk = 1;
  41. useAsync = 2;
  42. useExtClk = 3;                        {Externally clocked}
  43. useMIDI = 4;
  44. curSysEnvVers = 2;                    {Updated to equal latest SysEnvirons version}
  45. macXLMachine = 0;
  46. macMachine = 1;
  47. envMac = -1;                        {Environs Equates}
  48. envXL = -2;
  49. envMachUnknown = 0;
  50. env512KE = 1;
  51. envMacPlus = 2;
  52. envSE = 3;
  53. envMacII = 4;
  54. envMacIIx = 5;
  55. envMacIIcx = 6;
  56. envSE30 = 7;
  57. envPortable = 8;
  58. envMacIIci = 9;
  59. envCPUUnknown = 0;                    {CPU types}
  60. env68000 = 1;
  61. env68010 = 2;
  62. env68020 = 3;
  63. env68030 = 4;
  64. envUnknownKbd = 0;                    {Keyboard types}
  65. envMacKbd = 1;
  66. envMacAndPad = 2;
  67. envMacPlusKbd = 3;
  68. envAExtendKbd = 4;
  69. envStandADBKbd = 5;
  70. envPortADBKbd = 6;
  71. envPortISOADBKbd = 7;
  72. envStdISOADBKbd = 8;
  73. envExtISOADBKbd = 9;
  74. false32b = 0;                        {24 bit addressing error}
  75. true32b = 1;                        {32 bit addressing error}
  76.  
  77. { result types for RelString Call }
  78.  
  79. sortsBefore = -1;                    {first string < second string}
  80. sortsEqual = 0;                     {first string = second string}
  81. sortsAfter = 1;                     {first string > second string}
  82.  
  83.  
  84. TYPE
  85.  
  86. QTypes = (dummyType,vType,ioQType,drvQType,evType,fsQType);
  87.  
  88. TrapType = (OSTrap,ToolTrap);
  89.  
  90. ParamBlkType = (IOParam,FileParam,VolumeParam,CntrlParam,SlotDevParam,MultiDevParam,
  91.     AccessParam,ObjParam,CopyParam,WDParam);
  92.  
  93. SysPPtr = ^SysParmType;
  94. SysParmType = PACKED RECORD
  95.     valid: Byte;
  96.     aTalkA: Byte;
  97.     aTalkB: Byte;
  98.     config: Byte;
  99.     portA: INTEGER;
  100.     portB: INTEGER;
  101.     alarm: LONGINT;
  102.     font: INTEGER;
  103.     kbdPrint: INTEGER;
  104.     volClik: INTEGER;
  105.     misc: INTEGER;
  106.     END;
  107.  
  108.  
  109. QElemPtr = ^QElem;
  110.  
  111. FInfo = RECORD
  112.     fdType: OSType;                 {the type of the file}
  113.     fdCreator: OSType;                {file's creator}
  114.     fdFlags: INTEGER;                {flags ex. hasbundle,invisible,locked, etc.}
  115.     fdLocation: Point;                {file's location in folder}
  116.     fdFldr: INTEGER;                {folder containing file}
  117.     END;
  118.  
  119. VCB = RECORD
  120.     qLink: QElemPtr;
  121.     qType: INTEGER;
  122.     vcbFlags: INTEGER;
  123.     vcbSigWord: INTEGER;
  124.     vcbCrDate: LONGINT;
  125.     vcbLsMod: LONGINT;
  126.     vcbAtrb: INTEGER;
  127.     vcbNmFls: INTEGER;
  128.     vcbVBMSt: INTEGER;
  129.     vcbAllocPtr: INTEGER;
  130.     vcbNmAlBlks: INTEGER;
  131.     vcbAlBlkSiz: LONGINT;
  132.     vcbClpSiz: LONGINT;
  133.     vcbAlBlSt: INTEGER;
  134.     vcbNxtCNID: LONGINT;
  135.     vcbFreeBks: INTEGER;
  136.     vcbVN: Str27;
  137.     vcbDrvNum: INTEGER;
  138.     vcbDRefNum: INTEGER;
  139.     vcbFSID: INTEGER;
  140.     vcbVRefNum: INTEGER;
  141.     vcbMAdr: Ptr;
  142.     vcbBufAdr: Ptr;
  143.     vcbMLen: INTEGER;
  144.     vcbDirIndex: INTEGER;
  145.     vcbDirBlk: INTEGER;
  146.     vcbVolBkUp: LONGINT;
  147.     vcbVSeqNum: INTEGER;
  148.     vcbWrCnt: LONGINT;
  149.     vcbXTClpSiz: LONGINT;
  150.     vcbCTClpSiz: LONGINT;
  151.     vcbNmRtDirs: INTEGER;
  152.     vcbFilCnt: LONGINT;
  153.     vcbDirCnt: LONGINT;
  154.     vcbFndrInfo: ARRAY [1..8] OF LONGINT;
  155.     vcbVCSize: INTEGER;
  156.     vcbVBMCSiz: INTEGER;
  157.     vcbCtlCSiz: INTEGER;
  158.     vcbXTAlBlks: INTEGER;
  159.     vcbCTAlBlks: INTEGER;
  160.     vcbXTRef: INTEGER;
  161.     vcbCTRef: INTEGER;
  162.     vcbCtlBuf: Ptr;
  163.     vcbDirIDM: LONGINT;
  164.     vcbOffsM: INTEGER;
  165.     END;
  166.  
  167. DrvQElPtr = ^DrvQEl;
  168. DrvQEl = RECORD
  169.     qLink: QElemPtr;
  170.     qType: INTEGER;
  171.     dQDrive: INTEGER;
  172.     dQRefNum: INTEGER;
  173.     dQFSID: INTEGER;
  174.     dQDrvSz: INTEGER;
  175.     dQDrvSz2: INTEGER;
  176.     END;
  177.  
  178. ParmBlkPtr = ^ParamBlockRec;
  179. ParamBlockRec = RECORD
  180.     qLink: QElemPtr;
  181.     qType: INTEGER;
  182.     ioTrap: INTEGER;
  183.     ioCmdAddr: Ptr;
  184.     ioCompletion: ProcPtr;
  185.     ioResult: OSErr;
  186.     ioNamePtr: StringPtr;
  187.     ioVRefNum: INTEGER;
  188.     CASE ParamBlkType OF
  189.       IOParam:
  190.         (ioRefNum: INTEGER;
  191.         ioVersNum: SignedByte;
  192.         ioPermssn: SignedByte;
  193.         ioMisc: Ptr;
  194.         ioBuffer: Ptr;
  195.         ioReqCount: LONGINT;
  196.         ioActCount: LONGINT;
  197.         ioPosMode: INTEGER;
  198.         ioPosOffset: LONGINT);
  199.       FileParam:
  200.         (ioFRefNum: INTEGER;
  201.         ioFVersNum: SignedByte;
  202.         filler1: SignedByte;
  203.         ioFDirIndex: INTEGER;
  204.         ioFlAttrib: SignedByte;
  205.         ioFlVersNum: SignedByte;
  206.         ioFlFndrInfo: FInfo;
  207.         ioFlNum: LONGINT;
  208.         ioFlStBlk: INTEGER;
  209.         ioFlLgLen: LONGINT;
  210.         ioFlPyLen: LONGINT;
  211.         ioFlRStBlk: INTEGER;
  212.         ioFlRLgLen: LONGINT;
  213.         ioFlRPyLen: LONGINT;
  214.         ioFlCrDat: LONGINT;
  215.         ioFlMdDat: LONGINT);
  216.       VolumeParam:
  217.         (filler2: LONGINT;
  218.         ioVolIndex: INTEGER;
  219.         ioVCrDate: LONGINT;
  220.         ioVLsBkUp: LONGINT;
  221.         ioVAtrb: INTEGER;
  222.         ioVNmFls: INTEGER;
  223.         ioVDirSt: INTEGER;
  224.         ioVBlLn: INTEGER;
  225.         ioVNmAlBlks: INTEGER;
  226.         ioVAlBlkSiz: LONGINT;
  227.         ioVClpSiz: LONGINT;
  228.         ioAlBlSt: INTEGER;
  229.         ioVNxtFNum: LONGINT;
  230.         ioVFrBlk: INTEGER);
  231.       CntrlParam:
  232.         (ioCRefNum: INTEGER;
  233.         csCode: INTEGER;
  234.         csParam: ARRAY [0..10] OF INTEGER);
  235.       SlotDevParam:
  236.         (filler3: LONGINT;
  237.         ioMix: Ptr;
  238.         ioFlags: INTEGER;
  239.         ioSlot: SignedByte;
  240.         ioID: SignedByte);
  241.       MultiDevParam:
  242.         (filler4: LONGINT;
  243.         ioMMix: Ptr;
  244.         ioMFlags: INTEGER;
  245.         ioSEBlkPtr: Ptr);
  246.     END;
  247.  
  248. EvQElPtr = ^EvQEl;
  249. EvQEl = RECORD
  250.     qLink: QElemPtr;
  251.     qType: INTEGER;
  252.     evtQWhat: INTEGER;                {this part is identical to the EventRecord as...}
  253.     evtQMessage: LONGINT;            {defined in ToolIntf}
  254.     evtQWhen: LONGINT;
  255.     evtQWhere: Point;
  256.     evtQModifiers: INTEGER;
  257.     END;
  258.  
  259. VBLTask = RECORD
  260.     qLink: QElemPtr;
  261.     qType: INTEGER;
  262.     vblAddr: ProcPtr;
  263.     vblCount: INTEGER;
  264.     vblPhase: INTEGER;
  265.     END;
  266.  
  267. QElem = RECORD
  268.     CASE QTypes OF
  269.       vType:
  270.         (vblQElem: VBLTask);        {vertical blanking}
  271.       ioQType:
  272.         (ioQElem: ParamBlockRec);    {I/O parameter block}
  273.       drvQType:
  274.         (drvQElem: DrvQEl);         {drive}
  275.       evType:
  276.         (evQElem: EvQEl);            {event}
  277.       fsQType:
  278.         (vcbQElem: VCB);            {volume control block}
  279.     END;
  280.  
  281. QHdrPtr = ^QHdr;
  282. QHdr = RECORD
  283.     qFlags: INTEGER;
  284.     qHead: QElemPtr;
  285.     qTail: QElemPtr;
  286.     END;
  287.  
  288. DateTimeRec = RECORD
  289.     year: INTEGER;
  290.     month: INTEGER;
  291.     day: INTEGER;
  292.     hour: INTEGER;
  293.     minute: INTEGER;
  294.     second: INTEGER;
  295.     dayOfWeek: INTEGER;
  296.     END;
  297.  
  298. SysEnvRec = RECORD
  299.     environsVersion: INTEGER;
  300.     machineType: INTEGER;
  301.     systemVersion: INTEGER;
  302.     processor: INTEGER;
  303.     hasFPU: BOOLEAN;
  304.     hasColorQD: BOOLEAN;
  305.     keyBoardType: INTEGER;
  306.     atDrvrVersNum: INTEGER;
  307.     sysVRefNum: INTEGER;
  308.     END;
  309.  
  310.  
  311.  
  312. FUNCTION GetSysPPtr: SysPPtr;
  313. PROCEDURE SysBeep(duration: INTEGER);
  314.     INLINE $A9C8;
  315. FUNCTION KeyTrans(transData: Ptr;keycode: INTEGER;VAR state: LONGINT): LONGINT;
  316.     INLINE $A9C3;
  317. FUNCTION DTInstall(dtTaskPtr: QElemPtr): OSErr;
  318. FUNCTION GetMMUMode: SignedByte;
  319. PROCEDURE SwapMMUMode(VAR mode: SignedByte);
  320. FUNCTION SysEnvirons(versionRequested: INTEGER;VAR theWorld: SysEnvRec): OSErr;
  321. FUNCTION ReadDateTime(VAR time: LONGINT): OSErr;
  322. PROCEDURE GetDateTime(VAR secs: LONGINT);
  323. FUNCTION SetDateTime(time: LONGINT): OSErr;
  324. PROCEDURE SetTime(d: DateTimeRec);
  325. PROCEDURE GetTime(VAR d: DateTimeRec);
  326. PROCEDURE Date2Secs(d: DateTimeRec;VAR s: LONGINT);
  327. PROCEDURE Secs2Date(s: LONGINT;VAR d: DateTimeRec);
  328. PROCEDURE Delay(numTicks: LONGINT;VAR finalTicks: LONGINT);
  329. FUNCTION GetTrapAddress(trapNum: INTEGER): LONGINT;
  330. PROCEDURE SetTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  331. FUNCTION NGetTrapAddress(trapNum: INTEGER;tTyp: TrapType): LONGINT;
  332. PROCEDURE NSetTrapAddress(trapAddr: LONGINT;trapNum: INTEGER;tTyp: TrapType);
  333. FUNCTION WriteParam: OSErr;
  334. FUNCTION EqualString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): BOOLEAN;
  335. PROCEDURE UprString(VAR theString: Str255;diacSens: BOOLEAN);
  336. PROCEDURE Enqueue(qElement: QElemPtr;qHeader: QHdrPtr);
  337. FUNCTION Dequeue(qElement: QElemPtr;qHeader: QHdrPtr): OSErr;
  338. FUNCTION SetCurrentA5: LONGINT;
  339.     INLINE $2E8D,$2A78,$0904;
  340. FUNCTION SetA5(newA5: LONGINT): LONGINT;
  341.     INLINE $2F4D,$0004,$2A5F;
  342. PROCEDURE SetUpA5;
  343.     INLINE $2F0D,$2A78,$0904;
  344. { Replaced by SetCurrentA5 }
  345.  
  346. PROCEDURE RestoreA5;
  347.     INLINE $2A5F;
  348. { Replaced by SetA5 }
  349.  
  350. PROCEDURE Environs(VAR rom: INTEGER;VAR machine: INTEGER);
  351. PROCEDURE Restart;
  352. FUNCTION RelString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): INTEGER;
  353. FUNCTION HandToHand(VAR theHndl: Handle): OSErr;
  354. FUNCTION PtrToXHand(srcPtr: Ptr;dstHndl: Handle;size: LONGINT): OSErr;
  355. FUNCTION PtrToHand(srcPtr: Ptr;VAR dstHndl: Handle;size: LONGINT): OSErr;
  356. FUNCTION HandAndHand(hand1: Handle;hand2: Handle): OSErr;
  357. FUNCTION PtrAndHand(ptr1: Ptr;hand2: Handle;size: LONGINT): OSErr;
  358. FUNCTION InitUtil: OSErr;
  359.     INLINE $A03F,$3E80;
  360. FUNCTION SwapInstructionCache(cacheEnable: BOOLEAN): BOOLEAN;
  361. PROCEDURE FlushInstructionCache;
  362. FUNCTION SwapDataCache(cacheEnable: BOOLEAN): BOOLEAN;
  363. PROCEDURE FlushDataCache;
  364.  
  365. {$ENDC}    { UsingOSUtils }
  366.  
  367. {$IFC NOT UsingIncludes}
  368.     END.
  369. {$ENDC}
  370.  
  371.